package com.durian.utils;

import java.text.SimpleDateFormat;
import java.util.Date;
import java.util.Random;
import java.util.UUID;

/**
 * 生成随机数
 *
 * @author Durian
 * @since 2023/12/5
 */
public class UUIDUtils {

    private static final int ASCII_A = 65;

    /**
     * 生成订单编号
     *
     * @return 订单编号
     */
    public static String OrderNumber() {

        StringBuilder number = new StringBuilder();
        // 获取3位随机数
        String uuid = UUID.randomUUID()
                .toString()
                .substring(0, 2)
                .toUpperCase();
        // 获取时间数值
        String format = new SimpleDateFormat("mmHHyyddMMss").format(new Date());

        // 获取时间数值中的月份和小时数
        int minute = Integer.parseInt(format.substring(2, 4));
        int month = Integer.parseInt(format.substring(8, 10));
        // 将月份数和小时数转为大写字母，并插入成为前缀
        number.append((char)(minute + ASCII_A));
        number.append((char)(month + ASCII_A));

        number.append(uuid).append(format);
        // 将number转为字符串
        return number.toString();
    }

    /**
     * 生成书籍编号
     * @return 书籍编号
     */
    public static String BookNumber() {

        StringBuilder number = new StringBuilder();

        // 获取前缀
        Random random = new Random();
        number.append((char)(random.nextInt(26) + ASCII_A));

        // 获取时间数值
        String format = new SimpleDateFormat("HHddMM").format(new Date());
        // 获取小时数转成字母，并插入
        number.append((char)(Integer.parseInt(format.substring(format.length() - 2)) + ASCII_A));
        // 插入时间数值
        number.append(format);

        // 返回书籍编号
        return number.toString();
    }

}
